package com.yangrong.classloader.chapter1;

/**
 * 加载：查找并且加载类的二进制数据
 * 链接：
 * 验证：确保被加载类的正确性
 * 准备：为类的静态变量分配内存，并将其初始化为默认值
 * 解析：把类中的符号引用转换为直接引用
 * 初始化：为类的静态变量赋予正确的初始值
 * 
 * @author YangRong
 * @date 2020年7月2日
 */
public class Singleton {
	
	private static Singleton instance = new Singleton();
	
	// new Singleton()之后又重新赋值想为0，因此输出为0、1
	public static int x = 0;
	
	public static int y;
	
//	private static Singleton instance = new Singleton();
	
	/**
	 * int x = 0;
	 * int y = 0;
	 * instance = null;
	 */
	
	/**
	 * instance = null;
	 * x = 0;
	 * y = 0;
	 * 
	 * instance = new Singleton()
	 * x++ = 1
	 * y++ = 1
	 * 
	 * x = 0;
	 */
	
	private Singleton() {
		x++;
		y++;
	}
	
	public static Singleton getInstance() {
		return instance;
	}
	
	public static void main(String[] args) {
		Singleton singleton = getInstance();
		System.out.println(singleton.x);
		System.out.println(singleton.y);
	}

}
